<?php
// +----------------------------------------------------------------------
// | 幕小铺
// +----------------------------------------------------------------------
// | 版权所有 2016~2020 幕小铺科技（大连）有限公司
// +----------------------------------------------------------------------
// | 2020/06/02
// +----------------------------------------------------------------------

namespace app\erp\admin;

use app\admin\controller\Admin;
use think\Db;
use app\common\builder\ZBuilder;
/**
 * 仓库管理
 * @package app\cms\admin
 */
class Warehouse extends Admin
{
    // 模型初始化
    protected static function init()
    {
        //TODO:初始化内容
    }

    /**
     * 首页
     * @author  dou<51779987@qq.com>
     * @return mixed
     */
    public function index()
    {
        cookie('__forward__', $_SERVER['REQUEST_URI']);
        //获取筛选
        $map = $this->getMap();
        //数据获取
        $data = input();
        //数据列表
        $data_list = model('ErpWarehouse', 'model') -> where($map) -> order('sort asc, create_time desc') -> paginate();

        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setPageTitle('仓库管理') // 设置页面标题
            ->setPrimaryKey('id') // 设置主键名为id
            ->setTableName('erp_warehouse') // 设置数据表名
            ->addColumns([ // 批量添加列
                // ['__INDEX__', '序号'],
                ['id', '仓库ID'],
                ['title', '仓库名称'],
                ['code', '仓库编码'],
                ['address', '仓库地址'],
                ['type', '仓库类型',['1'=>'分仓','2'=>'总仓']],
                ['sort', '排序', 'text.edit'],
                ['create_time', '创建时间', 'datetime'],
                ['right_button', '操作', 'btn']
            ])
			->setSearchArea([
                ['text', 'title', '仓库名称', 'like'],
                ['text', 'address', '仓库地址', 'like'],
                ['text', 'code', '仓库编码', 'like'],
				['select', 'type', '仓库类型', '', '', [1 => '分仓', 2 => '总仓']],
            ])

            ->setSearch(['id' => '仓库ID', 'title' => '仓库名称', 'code' => '仓库编码']) // 设置搜索参数
            ->addTopButton('add', '', ['area' => ['50%', '80%']]) // 添加授权按钮
            ->addRightButton('edit', '', ['area' => ['50%', '80%']]) // 批量添加右侧按钮
            ->addRightButton('delete') // 批量添加右侧按钮
            ->setRowList($data_list) // 设置表格数据
            ->fetch(); // 渲染页面

    }

    /**
     * 添加
     * @author  dou<51779987@qq.com>
     * @return mixed
     * @throws \think\Exception
     */
    public function add(){
        // 保存数据
        if ($this->request->isPost()) {
            //数据接收
            $data = $this->request->post();
            $title      = isset($data['title']) ? $data['title'] : '';
            $code  		= isset($data['code']) ? $data['code'] : '';
            $address  	= isset($data['address']) ? $data['address'] : '';
            $sort  		= isset($data['sort']) ? $data['sort'] : '';
            $type  		= isset($data['type']) ? $data['type'] : '';

            //数据验证
            $Validate = validate('Warehouse', 'validate');
            if( !$Validate -> scene('warehouse_add') -> check($data) ){
                $this->error($Validate -> getError());
            }

            $rel = model('ErpWarehouse','model') -> addData($title, $code, $address, $type, $sort);

            if($rel['code'] == 200){
                $this->success('新增成功', '', '_parent_reload');
            }else{
                $this->error($rel['message']);
            }

        }

        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('新增仓库') // 设置页面标题
            ->addFormItems([ // 批量添加表单项
                ['text', 'title', '仓库名称','必填'],
                ['text', 'code', '仓库编码', '必填，可由英文字母、数字组成'],
                ['text', 'address', '仓库地址', '请输入仓库地址'],
            ])
            ->addSelect('type', '仓库类型', '请选择仓库类型', ['1' => '分仓', '2' => '总仓'])
            ->addText('sort', '排序', '', 100)
            ->fetch();
    }

    /**
     * 编辑
     * @param null $id 仓库id
     * @author dou <51779987@qq.com>
     * @return mixed
     * @throws \think\Exception
     */
    public function edit($id = null)
    {
        if ($id === null) $this->error('缺少参数');
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            $data['id'] = $id;
            $title      = isset($data['title']) ? $data['title'] : '';
            $code  		= isset($data['code']) ? $data['code'] : '';
            $address  	= isset($data['address']) ? $data['address'] : '';
            $type  		= isset($data['type']) ? $data['type'] : '';
            $sort  		= isset($data['sort']) ? $data['sort'] : '';

            //数据验证
            $Validate = validate('Warehouse', 'validate');
            if( !$Validate -> scene('warehouse_edit') -> check($data) ){
                $this->error($Validate -> getError());
            }

            $rel = model('ErpWarehouse','model') -> editData($id, $title, $code, $address,$type, $sort);

            if($rel['code'] == 200){
                $this->success('编辑成功', '', '_parent_reload');
            }else{
                $this->error($rel['message']);
            }

        }

        $info = model('ErpWarehouse', 'model') -> find($id);

        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('编辑仓库')
            ->addFormItems([
                ['text', 'title', '仓库名称','必填'],
                ['text', 'code', '仓库编码', '必填，可由英文字母、数字组成'],
                ['text', 'address', '仓库地址', '请输入仓库地址'],
            ])
            ->addSelect('type', '仓库类型', '请选择仓库类型', ['1' => '分仓', '2' => '总仓'])
            ->addText('sort', '排序')
            ->setFormData($info)
            ->fetch();
    }


}